﻿/*

El agente que va a reemplazar selecciona su situacion de revista
El agente ingresa fecha desde cuando hasta cuando va a reemplazar

Datos del Agente:

 * 1)Si se trata de un agente existente

El agente ingresa el dni para encontrarlo, si no se lo encuentra se
muestra el findform para buscarlo por apellido o nombre

2) Si se trata de un agente nuevo

 Mostrar un mensaje de diálogo que le diga
 * Este es un agente nuevo, desea darlo de alta.
 Si la respuesta es si, entonces se muestra el formulario frmABMAgente


La disposición de Alta es el nùmero de resoluciòn con el que se da de alta al agente
(Controlar si ya existe en la base de datos)


Traer los datos de codigo de la unidad educativa
Traer los datos de la unidad eductativa
 
 * 
 * 
 * Nombre de la unidad educativa
 * Nivel/Modalidad
 * Código de oficina
 * Código de anexo
 * Categoría
 * Zona
 * Jornada
 * Localidad o Parada
 * 
Codigo de Oficina, nombre, codigo anexo, nivel, modalidad, categoria, zona, jornada, localidad o paraje.

---------------

El agente selecciona el codigo de cargo a traves del combobox (previamente se cargara un combo con la descripcion y el ceic del cargo)
El agente selecciona el año y la división
El agente carga las horas
El agente ingresa el plan de estudio  (podria estar cargado previamente)
El agente selecciona asignatura del combobox (cargar previamente el combo de asignatura)

 * -----------------
*/



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Linq;

namespace ProyectoEscuela
{
    public partial class frmAltaAgente : ProyectoEscuela.frmBaseForm
    {
        dbProyectoEscuelaDataContext db = new dbProyectoEscuelaDataContext();

        public frmAltaAgente()
        {
            InitializeComponent();

            nomCargoBindingSource.DataSource = db.NomCargos.ToList();
            nomCargoBindingSource1.DataSource = db.NomCargos.ToList();

            motivoCargoBindingSource.DataSource = db.MotivoCargos.ToList();
            motivoCargoBindingSource1.DataSource = db.MotivoCargos.ToList();

            Curso todos = new Curso();
            todos.IdCurso = 0;
            todos.Nombre_Curso= "Todos";
            var cursos = from m in db.Cursos
                                  orderby m.Nombre_Curso
                                  select m;
            List<Curso> listadoCursos = cursos.ToList();
            listadoCursos.Add(todos);

            var listadoMaterias = from mat in db.Materias
                              orderby mat.Nombre
                              select mat;
            materiaBindingSource.DataSource = listadoMaterias;
            materiaBindingSource1.DataSource = listadoMaterias;

            cursoBindingSource.DataSource = listadoCursos;
            cursoBindingSource1.DataSource = listadoCursos;

            

            
        }

        private bool ValVacio(Control miControl, String mensajeError)
        {
            // devuelve true si es vacio
            bool bStatus = false;
            if (miControl.Text == "")
            {
                errorProvider1.SetError(miControl, mensajeError);
                bStatus = true;
            }
            else
                errorProvider1.SetError(miControl, "");
            return bStatus;
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            Persona agente;

            try
            {
                agente = db.Personas.Single(p => p.TipoDoc == cmbTipoDoc.Text.ToString() && p.Numdoc == txtNumDoc.Text.ToString());

            }
            catch (Exception ex)
            {
                frmBuscarPersona frm = new frmBuscarPersona("agente");

                frm.ShowDialog();

                agente = frm.getAgente();
                //cargamos los combos
                cmbTipoDoc.Text = agente.TipoDoc;
                txtNumDoc.Text = agente.Numdoc;
            }

            txtApellido.Text = agente.Apellido;
            txtNombre.Text = agente.Nombre;
            txtSexo.Text = agente.Sexo;
            


        }

        private void btnBuscarSuplente1_Click(object sender, EventArgs e)
        {
            Persona agente;

            try
            {
                agente = db.Personas.Single(p => p.TipoDoc == cmbTipoDocSuplente1.Text.ToString() && p.Numdoc == txtNumDocSuplente1.Text.ToString());

            }
            catch (Exception ex)
            {
                frmBuscarPersona frm = new frmBuscarPersona("agente");

                frm.ShowDialog();

                agente = frm.getAgente();
                //cargamos los combos
                cmbTipoDocSuplente1.Text = agente.TipoDoc;
                txtNumDocSuplente1.Text = agente.Numdoc;
            }

            txtApellidoSuplente1.Text = agente.Apellido;
            txtNombreSuplente1.Text = agente.Nombre;
            txtSexoSuplente1.Text = agente.Sexo;
        }

        private void cmbMateria1_SelectedIndexChanged(object sender, EventArgs e)
        {
            txtHorasCatedra1.Text = cmbMateria1.ValueMember;

            Materia materia = (Materia)cmbMateria1.SelectedItem;
            if (materia != null)
                txtHorasCatedra1.Text = materia.Cant_Hora_Semanal.ToString();
        }

        private void rbtnSuplente1_CheckedChanged(object sender, EventArgs e)
        {
            //EJEMPLO DE CODIGO
            //if (radioButton2.Checked == true)
            //{
            //    cmbMotivoBaja.Enabled = true;
            //    cmbCambioSituacion.Enabled = false;
            //}
            //else
            //{
            //    cmbMotivoBaja.Enabled = false;
            //    cmbCambioSituacion.Enabled = true;

            //}
            if (rbtnSuplente1.Checked == true)
            {
                groupBox4.Enabled = true;
            }
            else
            {
                groupBox4.Enabled = false;
            }

        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtnSuplente1.Checked == true)
            {
                groupBox9.Enabled = true;
            }
            else
            {
                groupBox9.Enabled = false;
            }
        }

        private void btnBuscarSuplente2_Click(object sender, EventArgs e)
        {
            Persona agente;

            try
            {
                agente = db.Personas.Single(p => p.TipoDoc == cmbTipoDocSuplente2.Text.ToString() && p.Numdoc == txtNumDocSuplente2.Text.ToString());

            }
            catch (Exception ex)
            {
                frmBuscarPersona frm = new frmBuscarPersona("agente");

                frm.ShowDialog();

                agente = frm.getAgente();
                //cargamos los combos
                cmbTipoDocSuplente2.Text = agente.TipoDoc;
                txtNumDocSuplente2.Text = agente.Numdoc;
            }

            txtApellidoSuplente2.Text = agente.Apellido;
            txtNombreSuplente2.Text = agente.Nombre;
            txtSexoSuplente2.Text = agente.Sexo;
        }

        private void button5_Click(object sender, EventArgs e)
        {

            // VALIDACIONES 
            String msjError = "Favor de ingresar y/o seleccionar un valor";
            bool errores = false;
            Control[] controlesAValidar = {
                 cmbTipoDoc,
                 txtNumDoc,
                 txtDisposicionAlta1,
                 txtDisposicionAlta2,
                 txtDisposicionAlta3,
                 cmbCodigoCargo1,
                 cmbAnioDivision1,
                 cmbTurno1,
                 
                 cmbTurno1,
                 txtPlanEstudio,
                 cmbMateria1,
                 txtHorasCatedra1,
                 cmbDescripcionMotivo1,
                 txtInstrumentoNro1,
                 txtInstrumentoTipo1
                                          };

          

            foreach (Control val in controlesAValidar)
            {
                if (errores == false) errores = ValVacio(val, msjError);
            }

            // CONTROL SUPLENTE 1
            if (rbtnSuplente1.Checked)
            {
                // VALIDACIONES 
            Control[] controlesAValidar1 = {
                 cmbTipoDocSuplente1,
                 txtNumDocSuplente1
                                          };
            foreach (Control val in controlesAValidar1)
            {
                if (errores == false) errores = ValVacio(val, msjError);
            }
            }
            // CONTROL SUPLENTE 2 
            if (rbtnSuplente2.Checked)
            {
                // VALIDACIONES 
                Control[] controlesAValidar2 = {
                 cmbTipoDocSuplente2,
                 txtNumDocSuplente2
                                          };
                foreach (Control val in controlesAValidar2)
                {
                    if (errores == false) errores = ValVacio(val, msjError);
                }
            }

            if (errores)
                MessageBox.Show("Favor de Verificar los datos ingresados.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            else
            {
                // ACCION EN CASO DE K VAYA BIEN...
                altaCargosAgente();
                
            }
        }

        private void limpiarCampos()
        {

            checkBox1.Checked = false;
            checkBox2.Checked = false;
            checkBox3.Checked = false;

            txtNumDoc.Text = "";
            txtDisposicionAlta2.Text = "";
            txtEspecialidad1.Text = "";
            txtPlanEstudio.Text = ""; ;
            txtHorasCatedra1.Text = "";
            txtInstrumentoNro1.Text = "";
            txtCodigoMotivo1.Text = "";
            txtInstrumentoTipo1.Text = "";

            txtEspecialidad2.Text = "";
            txtPlanEstudio2.Text = ""; ;
            txtHoraCatedra2.Text = "";
            txtInstrumentoNro2.Text = "";
            txtCodigoMotivo2.Text = "";
            txtInstrumentoTipo2.Text = "";

        }

        private void altaCargosAgente()
        {
            Persona agente;

            try
            {
                agente = db.Personas.Single(p => p.TipoDoc == cmbTipoDoc.Text.ToString() && p.Numdoc == txtNumDoc.Text.ToString());


                // CARGO 1 
                Cargo cargo1 = new Cargo();

                if (rbtnTitular1.Checked)
                    cargo1.idSituacionDeRevista = 1; // suponemos TITULAR
                if (rbtnInterino1.Checked)
                    cargo1.idSituacionDeRevista = 2; // suponemos INTERINO
                if (rbtnSuplente1.Checked)
                    cargo1.idSituacionDeRevista = 3; // suponemos SUPLENTE

                cargo1.NomCargo = (NomCargo)cmbCodigoCargo1.SelectedItem;
                cargo1.Turno = cmbTurno1.Text;
                Curso miCursoSeleccionado1 = (Curso)cmbAnioDivision1.SelectedItem;
                cargo1.Año = miCursoSeleccionado1.Nombre_Curso.Substring(0, 2);
                cargo1.Division = miCursoSeleccionado1.Division;
                cargo1.Especialidad = txtEspecialidad1.Text;
                cargo1.PlanDeEstudio = txtPlanEstudio.Text;
                cargo1.HorasCatedra = Int32.Parse(txtHorasCatedra1.Text);
                cargo1.NroInstrumentoLegal = txtInstrumentoNro1.Text;
                cargo1.FechaAlta = cmbFechaAltaDesde.Value;
                //cargo1.FechaBaja = cmbFechaAltaHasta.Value;
                if (cmbMateria1.SelectedText == "Todos")
                {
                    cargo1.Materia = null;
                }
                else
                    cargo1.Materia = (Materia)cmbMateria1.SelectedItem;

                cargo1.NroResolDispAlta = txtDisposicionAlta1.Text + " " + txtDisposicionAlta2.Text + " " + txtDisposicionAlta3.Text;

                cargo1.UnidadEducativa = (UnidadEducativa)db.UnidadEducativas.Single(l => l.CodigoAnexo == "373");
                cargo1.MotivoCargo = (MotivoCargo)cmbDescripcionMotivo1.SelectedItem;
                cargo1.instrumentoLegal = txtInstrumentoTipo1.Text;

                if (rbtnSuplente1.Checked)
                {
                    cargo1.FechaBaja = cmbFechaAltaHasta1.Value;
                    cargo1.MotivoReemplazo = cmbTipoDocSuplente1.Text + "-" + txtNumDocSuplente1.Text;
                }

                agente.Cargos.Add(cargo1);
           


                // CARGO 2 
                if (txtInstrumentoNro2.Text.Length > 0 && txtInstrumentoTipo2.Text.Length > 0)
                {
                    Cargo cargo2 = new Cargo();

                    if (rbtnTitular2.Checked)
                        cargo2.idSituacionDeRevista = 1; // suponemos TITULAR
                    if (rbtnInterino2.Checked)
                        cargo2.idSituacionDeRevista = 2; // suponemos INTERINO
                    if (rbtnSuplente2.Checked)
                        cargo2.idSituacionDeRevista = 3; // suponemos SUPLENTE

                    cargo2.NomCargo = (NomCargo)cmbCodigoCargo2.SelectedItem;
                    cargo2.Turno = cmbTurno2.Text;
                    Curso miCursoSeleccionado2 = (Curso)cmbAnioDivision2.SelectedItem;
                    cargo2.Año = miCursoSeleccionado2.Nombre_Curso.Substring(0, 2);
                    cargo2.Division = miCursoSeleccionado2.Division;
                    cargo2.Especialidad = txtEspecialidad2.Text;
                    cargo2.PlanDeEstudio = txtPlanEstudio2.Text;
                    cargo2.HorasCatedra = Int32.Parse(txtHoraCatedra2.Text);
                    cargo2.NroInstrumentoLegal = txtInstrumentoNro2.Text;
                    cargo2.FechaAlta = cmbFechaAltaDesde.Value;
                    //cargo2.FechaBaja = cmbFechaAltaHasta.Value;
                    if (cmbMateria2.SelectedText == "Todos")
                    {
                        cargo2.Materia = null;
                    }
                    else
                        cargo2.Materia = (Materia)cmbMateria2.SelectedItem;
                    cargo2.NroResolDispAlta = txtDisposicionAlta1.Text + " " + txtDisposicionAlta2.Text + " " + txtDisposicionAlta3.Text;

                    cargo2.UnidadEducativa = (UnidadEducativa)db.UnidadEducativas.Single(l => l.CodigoAnexo == "373");
                    cargo2.MotivoCargo = (MotivoCargo)cmbDescripcionMotivo2.SelectedItem;
                    cargo2.instrumentoLegal = txtInstrumentoTipo2.Text;


                    if (rbtnSuplente2.Checked)
                    {
                        cargo2.FechaBaja = cmbFechaAltaHasta1.Value;
                        cargo2.MotivoReemplazo = cmbTipoDocSuplente2.Text + "-" + txtNumDocSuplente2.Text;
                    }


                    agente.Cargos.Add(cargo2);
                } 

                db.SubmitChanges();
                MessageBox.Show("Modificaciones guardadas exitosamente.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                limpiarCampos();
            
                tabControl1.Show();






            }
            catch (Exception ex)
            {

            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            // VALIDACIONES 
            String msjError = "Favor de ingresar y/o seleccionar un valor";
            bool errores = false;
            Control[] controlesAValidar = {
                 cmbTipoDoc,
                 txtNumDoc,
                 txtDisposicionAlta1,
                 txtDisposicionAlta2,
                 txtDisposicionAlta3,
                 cmbCodigoCargo1,
                 cmbAnioDivision1,
                 cmbTurno1,
                 txtEspecialidad1,
                 cmbTurno1,
                 txtPlanEstudio,
                 cmbMateria1,
                 txtHorasCatedra1,
                 cmbDescripcionMotivo1,
                 txtInstrumentoNro1,
                 txtInstrumentoTipo1
                                          };

            foreach (Control val in controlesAValidar)
            {
                if (errores == false) errores = ValVacio(val, msjError);
            }



            if (errores)
                MessageBox.Show("Favor de Verificar los datos ingresados.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            else
            {
                // ACCION EN CASO DE K VAYA BIEN...
                imprimirFormDP01();
            }
        }

        private void imprimirFormDP01()
        {
            dsAltaAgente.AgenteCargosDataTable dt;
            dsAltaAgente.AgenteCargosRow dr;

            dt = new dsAltaAgente.AgenteCargosDataTable();
            dr = dt.NewAgenteCargosRow();

            if (checkBox1.Checked)
                dr.titular = "X";
            if (checkBox2.Checked)
                dr.interino = "X";
            if (checkBox3.Checked)
                dr.suplente = "X";

            dr.disposicionAltaNro = txtDisposicionAlta1.Text + "-" + txtDisposicionAlta2.Text + "-" + txtDisposicionAlta3.Text;
            dr.fechaAltaDesde = cmbFechaAltaDesde.Value.ToShortDateString();
            if (rbtnSuplente1.Checked != true)
                dr.fechaAltaHasta = "CONTINUA";
            else
                dr.fechaAltaHasta = cmbFechaAltaHasta1.Value.ToShortDateString();

            dr.apellido = txtApellido.Text;
            dr.nombre = txtNombre.Text;
            dr.dni = txtNumDoc.Text;
            if (txtSexo.Text == "Masculino")
                dr.sexoM = "X";
            else
                dr.sexoF = "X";
            dr.codigoOficina = txtCodigoOficina.Text;
            dr.codigoAnexo = txtCodigoAnexo.Text;
            dr.unidadEducativa = txtUnidadEducativa.Text;
            dr.nivel = txtNivel.Text;
            dr.categoria = txtCategoria.Text;
            dr.zona = txtZona.Text;
            dr.jornada = txtJornada.Text;
            dr.localidad = txtLocalidad.Text;


            // CARGO 1
            NomCargo codigoCargo = (NomCargo) cmbCodigoCargo1.SelectedItem;
            dr.codigoCargo1 = codigoCargo.CodCargo.ToString();
            dr.descripcionCargo1 = codigoCargo.Descripcion;

            Curso curso = (Curso) cmbAnioDivision1.SelectedItem;
            dr.anio1 = curso.Nombre_Curso.Substring(0,2);
            dr.division1 = curso.Nombre_Curso.Substring(2,1);

            dr.turno1 = cmbTurno1.SelectedText;
            dr.horasCatedra1 = txtHorasCatedra1.Text;
            dr.especialidad1 = txtEspecialidad1.Text;
            dr.plandeEstudio1 = txtPlanEstudio.Text;
            
            dr.asignatura1 = cmbMateria1.Text;

            MotivoCargo motivoCargo = (MotivoCargo) cmbDescripcionMotivo1.SelectedItem;
            dr.codigoMotivoTitular1 = motivoCargo.CodigoMotivo.ToString();
            dr.descripcionMotivoTitular1 = motivoCargo.Descripcion;
            dr.instrumentoLegalTitular1 = txtInstrumentoTipo1.Text + " " + txtInstrumentoNro1.Text;
            dr.codigoMotivoSuplente1 = txtCodigoMotivo1.Text;
            dr.descripcionMotivoSuplente1 = motivoCargo.Descripcion;
            dr.instrumentoLegalSuplente1 = txtInstrumentoTipo1.Text + " " + txtInstrumentoNro1.Text;

            dr.dniSuplente1 = txtNumDocSuplente1.Text;
            if (txtSexoSuplente1.Text == "Masculino")
                dr.sexoMSuplente1 = "X";
            else
                dr.sexoFSuplente1 = "X";
            dr.apellidoSuplente1 = txtApellidoSuplente1.Text;
            dr.nombreSuplente1 = txtNombreSuplente1.Text;


            // CARGO 2
            if (txtInstrumentoNro2.Text.Length > 0 && txtInstrumentoTipo2.Text.Length > 0)
            {
                NomCargo codigoCargo2 = (NomCargo)cmbCodigoCargo2.SelectedItem;
                dr.codigoCargo2 = codigoCargo2.CodCargo.ToString();
                dr.descripcionCargo2 = codigoCargo2.Descripcion;

                Curso curso2 = (Curso)cmbAnioDivision2.SelectedItem;
                dr.anio2 = curso2.Nombre_Curso.Substring(0, 2);
                dr.division2 = curso2.Nombre_Curso.Substring(2, 1);

                dr.turno2 = cmbTurno2.SelectedText;
                dr.horasCatedra2 = txtHoraCatedra2.Text;
                dr.especialidad2 = txtEspecialidad2.Text;
                dr.plandeEstudio2 = txtPlanEstudio2.Text;

                dr.asignatura2 = cmbMateria2.Text;

                MotivoCargo motivoCargo2 = (MotivoCargo)cmbDescripcionMotivo2.SelectedItem;
                dr.codigoMotivoTitular2 = motivoCargo2.CodigoMotivo.ToString();
                dr.descripcionMotivoTitular2 = motivoCargo2.Descripcion;
                dr.instrumentoLegalTitular2 = txtInstrumentoTipo2.Text + " " + txtInstrumentoNro2.Text;
                dr.codigoMotivoSuplente2 = txtCodigoMotivo2.Text;
                dr.descripcionMotivoSuplente2 = motivoCargo2.Descripcion;
                dr.instrumentoLegalSuplente2 = txtInstrumentoTipo2.Text + " " + txtInstrumentoNro2.Text;

                dr.dniSuplente2 = txtNumDocSuplente2.Text;
                if (txtSexoSuplente2.Text == "Masculino")
                    dr.sexoMSuplente2 = "X";
                else
                    dr.sexoFSuplente2 = "X";
                dr.apellidoSuplente2 = txtApellidoSuplente2.Text;
                dr.nombreSuplente2 = txtNombreSuplente2.Text;
            }



            dt.Rows.Add(dr);

            rptDisposicionAltaIntySupDP01 rpt;
            rpt = new rptDisposicionAltaIntySupDP01();
            rpt.SetDataSource((DataTable)dt);

            frmReportForm frm;
            frm = new frmReportForm(rpt);
            frm.ShowDialog();



        }

 
   

    }
}
